Глава
8
Операторы
CFML
Теперь, когда
вы имеете представление о построении страниц с помощью CFML, можно перейти к
детальному рассмотрению операторов и выражений языка ColdFusion.
Операторы
— это конструкции, выполняющие некоторые действия над одним или несколькими
аргументами и выдающие результат. В качестве таких конструкций выступают специальные
символы, которые сообщают серверу, что вы хотите выполнить операцию с некоторыми
операндами. Типы операций задаются с помощью операторов, а операнды — это переменные,
выражения или литералы. Операторы, требующие наличия одного операнда, называются
унарными. Одни операторы ставятся перед операндом и называются префиксными,
другие — после операнда, их называют постфиксными операторами. Операторы,
которые указываются между операндами, называются инфиксными бинарными операторами.
В ColdFusion
имеется 22 оператора, которые делятся на четыре различных типа: арифметические,
операторы отношения или сравнения, логические операторы и строковый оператор.
Арифметические
операторы используются для вычислений. Допустимые операнды должны иметь числовые
типы. Список операторов приведен в табл. 8.1.
Таблица
8.1. Арифметические операторы
Оператор |
Описание |
||
+,-,*, / |
Сложение, вычитание,
умножение и деление. В случае деления второй операнд не может быть
равен нулю Унарные арифметические
операторы для установки знака числа, положительный (+) или отрицательный
(-) |
||
MOD |
Оператор вычисления
остатка от деления. Результат имеет тот же знак, что и первый операнд.
Второй операнд не может быть равен нулю. Например, 10 MOD 3, результат
равен 1 Целочисленное
деление. Второй операнд не может быть равен нулю. Например, 10 \ 3,
результат равен 3 Возведение в
степень. Первый операнд не может быть равен нулю. Например, 10 А
3, результат равен 1000 |
||
Для того
чтобы можно было сравнивать два значения, в ColdFusion имеется набор операторов,
описывающих отношения и равенство. Операторы отношения или сравнения возвращают
логическое значение True (Истинно) или False (Ложно). Список операторов приведен
в табл. 8.2.
Таблица
8.2. Операторы отношения или сравнения
Оператор |
Описание |
||
IS |
Возвращает True,
если значения операндов идентичны |
||
IS NOT |
Противоположно
is |
||
CONTAINS |
Проверяет, содержится
ли в первом ( операнде значение второго операнда, и возвращает
True -при положительном результате |
||
DOES NOT CONTAIN |
ПРОТИВОПОЛОЖНО
CONTAINS |
||
GREATER THAN |
Проверяет, является
ли значение первого операнда больше, чем значение второго операнда,
и возвращает True при положительном результате |
||
LESS THAN |
ПРОТИВОПОЛОЖНО
GREATER THAN |
||
GREATER THAN
OR EQUAL TO |
Проверяет, является
ли значение первого операнда большим или равным значению второго операнда,
и возвращает True при положительном результате |
||
LESS THAN OR
EQUAL TO |
Проверяет, является
ли значение первого операнда меньшим или равным значению второго операнда,
и возвращает True при положительном результате |
||
Некоторые
операторы отношения или сравнения имеют сокращения, которые можно использовать
для написания более компактного CFML-кода.
Использование
сокращений также избавляет от запоминания длинных названий операторов и сокращает
процесс разработки Web-приложения. Список сокращений приведен в табл. 8.3.
Таблица
8.3. Сокращения операторов отношения или сравнения
Оператор |
Альтернативные
названия |
||
IS |
EQUAL, EQ |
||
IS NOT |
NOT EQUAL, NEQ |
||
CONTAINS |
Отсутствует |
||
DOES NOT CONTAIN |
Отсутствует |
||
GREATER THAN |
GT |
||
LESS THAN |
LT |
||
GREATER THAN
OR EQUAL TO |
GTE, GE |
||
LESS THAN OR
EQUAL TO |
LTE, LE |
||
К примеру,
в конструкции
<CFSET valTest
= 10>
<CFIF valTest
GREATER THAN OR EQUAL TO 9>
It is more or
equally <CFELSE>
It is less </CFIF>
где — GREATER THAN OR EQUAL то,
можно заменить
сокращениями GTE или GE:
<CFIF valTest
GTE 9>
или
<CFIF valTest
GE 9>
Результат
при этом не изменится.
Булевы, или
логические операторы, список которых приведен ниже, оперируют только с операндами
типа boolean. Все бинарные логические операторы воспринимают в качестве операндов
два значения типа boolean и возвращают результат того же типа. Список операторов
приведен в табл. 8.4.
Таблица
8.4. Булевы операторы
Оператор |
Описание |
||
NOT AND OR XOR EQV IMP |
HE. Инвертирует
логическое значение. Например, NOT True = False и наоборот И. Взращает
True, если оба операнда имеют значение True, иначе возвращает False.
Например, (True AND True) = True, (True AND False) = False ИЛИ. Возвращает
True, если любой из операндов имеет значение True, иначе возвращает
False. Например, (True OR False) = True, (False OR False) = False Исключающее
ИЛИ. Возвращает True, если операнды имеют различные значения, иначе
возвращает False. Например, (True XOR True) = False, (False XOR True)
= True Эквивалентность
(противоположность XOR). Возвращает True, если операнды эквивалентны,
иначе возвращает False. Например, (True EQV True) = True, (False EQV
True) = False Импликация.
Возвращает False, только когда первый операнд имеет значение True,
а второй — False. Иначе возвращает True |
||
В эту категорию
входит лишь один оператор (табл. 8.5).
Таблица
8.5, Строковый оператор
Оператор |
Описание |
||
& |
Соединяет символьные
выражения. Например, "Анна " & "Андреевна"
возвращает— "Анна Андреевна" |
||
В ColdFusion
действует определенный порядок, или приоритет операций. Из элементарной алгебры
известно, что операции умножения и деления имеют более высокий приоритет, чем
операции сложения и вычитания. В программировании также существует приоритет
операций. Ниже приведен список операций в порядке убывания приоритета.
Для явной
установки приоритета можно использовать круглые скобки ( ). Вы всегда можете
добавить в выражение несколько пар скобок, если у вас есть сомнения по поводу
порядка вычислений или вам хочется сделать свой код более читабельным.
Например,
пусть необходимо рассчитать осевой момент инерции относительно центральной оси
Y для сечения из двух равных прямоугольников. Для определения порядка вычислений
скобки расставим следующим образом:
Jy = ( b^3 *
( h - h1) ) /12
Здесь b —
ширина сечения, h — внешняя высота сечения; h1 — внутренняя высота сечения.
В следующей главе рассмотрим переменные и типы, используемые в ColdFusion.